#include "game.h" 

// 对于这节课有点超纲了,因为我是学完后面的课程然后补作业交的
// 用了自定义函数、包含了一个自己的头文件,把要包含的头文件和常量都打包进去了

void menu () // 自定义空函数,作为菜单界面打印菜单信息
{

    printf("****************\n") ;
    printf("**** 1.play ****\n") ;
    printf("**** 0.exit ****\n") ;
    printf("****************\n") ;

    printf("please choice:>") ;
    
}

void using (int times) // 实现猜数字游戏的自定义空函数,传参是为了实现难度选择
{

    int random = rand () % 100 + 1 ; // 设定数字范围1-100的随机生成

    int guess , flag = 0 ; // 声明猜数字变量,flag变量用来检测是否猜对数字

    while (times)
    {
        
        printf("gusess the number:") ;

        scanf("%d" , &guess) ;

        if (guess > random) // 判断是否才对,不对就提示并且剩余次数少一次
        {

            printf("bigger\n") ;

            times-- ;

        }

        else if (guess < random)
        {

            printf("smaller\n") ;

            times-- ;

        }

        else
        {

            printf("congratulations ! you right !\n") ;

            flag = 1 ;

            break ;

        }

    }

    if (!flag) // 要是失败执行
    {

        printf("no times , game over.\n") ;

    }
    
}

void game () // 空函数,负责难度选择界面
{

    int game_difficulty , times ;

    back : // 对标下面goto语句

    printf("game difficulty , 1.easy 2.mid 3.hard :") ;

    scanf("%d" , &game_difficulty) ;

    switch (game_difficulty) // 用switch判断选择的难度
    {

        case 1 :
            times = easy ;
            using (times) ;
            break ;

        case 2 : 
            times = mid ;
            using (times) ;
            break ;

        case 3 :
            times = hard ;
            using (times) ;
            break ;

        default :
            printf("error number\n") ;
            goto back ; // 要是乱选,直接goto上面重新选择

    }

}

int main() // 主函数,程序执行入口
{

    srand ((unsigned int) time (NULL)) ;

    int choice = 0 ;   

    do // 不管玩不玩游戏,都执行一次
    {

        menu () ; // 菜单界面

        scanf("%d" , &choice) ;

        switch (choice) // 用switch来判断选择
        {

            case 0:
                printf("exit the game!/n") ;
                break ;

            case 1:
                game() ;
                break ;

            default:
                printf("error number\n") ;
                break;

        }

    }while(choice) ; // 除非输入0,否则会一直循环

    return 0 ;

}